home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The 640 MEG Shareware Studio 2
/
The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO
/
prog
/
cobprint.zip
/
COBPRINT.COB
next >
Wrap
Text File
|
1990-06-24
|
7KB
|
220 lines
000100 IDENTIFICATION DIVISION.
000200*
000300 PROGRAM-ID. COBPRINT.
000400*
000410 AUTHOR. JAMES M. STEELMAN JR.
000420 STEELMAN CONSULTING SERVICES
000430 1211 RIVER FOREST LANE
000440 WOODSTOCK, GA 30188
000441*
000450*=================================================================
000460*
000470* THE PURPOSE OF THIS PROGRAM IS TO READ A FILE OF 80 CHARACTER
000480* RECORDS AND CAUSE THEM TO BE PRINTED WITH PAGE BREAKS AND
000490* A HEADER AT THE TOP OF EACH PAGE.
000492*
000493* WILD CARD NAMES ARE SUPPORTED TO SOME DEGREE.
000494*
000495* TO RUN THE PROGRAM ENTER THE FOLLOWING:
000496*
000497* COBPRINT NAME-OF-FILE-TO-BE-PRINTED
000498*
000499*=================================================================
000500*
000510 ENVIRONMENT DIVISION.
000600 CONFIGURATION SECTION.
000700 SOURCE-COMPUTER. IBM-PC.
000800 OBJECT-COMPUTER. IBM-PC.
000900*
001000 INPUT-OUTPUT SECTION.
001100*
001200 FILE-CONTROL.
001300*
001400 SELECT INFILE ASSIGN TO VARYING INFILE-NAME.
001500 SELECT OUTFILE ASSIGN TO 'PRN[N]'.
001600*
001700 DATA DIVISION.
001800*
001900 FILE SECTION.
002000*
002100 FD INFILE
002200 LABEL RECORDS ARE STANDARD
002300 RECORD CONTAINS 80 CHARACTERS.
002400 01 INFILE-REC PIC X(80).
002500*
002600 FD OUTFILE
002700 LABEL RECORDS ARE STANDARD
002800 RECORD CONTAINS 80 CHARACTERS.
002900 01 OUTFILE-REC PIC X(80).
003000*
003100 WORKING-STORAGE SECTION.
003200*
003300 01 INFILE-NAME PIC X(79) VALUE SPACES.
003400 01 SEARCH-NAME PIC X(79) VALUE SPACES.
003500 01 SEARCH-INFO.
003600 05 SEARCH-STATE PIC X(26).
003700 05 FILE-SIZE PIC S9(9) COMP-5.
003800 05 FILE-NAME PIC X(13).
003900 05 FILE-DATE-TIME.
004000 07 FILE-DATE.
004100 09 YEARS PIC S9(4) COMP-5.
004200 09 MONTHS PIC S9(4) COMP-5.
004300 09 DAYS PIC S9(4) COMP-5.
004400 07 FILE-TIME.
004500 09 HOURS PIC S9(4) COMP-5.
004600 09 MINUTES PIC S9(4) COMP-5.
004700 09 SECONDS PIC S9(4) COMP-5.
004800 05 FILE-ATTR PIC S9(4) COMP-5 VALUE 32.
004900 01 FILE-HANDLE PIC S9(04) COMP-5.
005000 01 FILE-ACCESS-MODE PIC S9(4) COMP-5.
005100*
005200 01 HD1.
005300 03 FILLER PIC X(40)
005400 VALUE '*---------------------------------------'.
005500 03 FILLER PIC X(40)
005600 VALUE '---------------------------------------*'.
005700*
005800 01 HD2.
005900 03 FILLER PIC X(09) VALUE '| FILE: '.
006000 03 HD2-FILE-NAME PIC X(12) VALUE SPACES.
006100 03 FILLER PIC X(58) VALUE SPACES.
006200 03 FILLER PIC X(01) VALUE '|'.
006300*
006400 01 HD3.
006500 03 FILLER PIC X(09) VALUE '| SAVED: '.
006600 03 HD3-FILE-DATE.
006700 05 HD3-FD-MM PIC 9(02).
006800 05 FILLER PIC X VALUE '/'.
006900 05 HD3-FD-DD PIC 9(02).
007000 05 FILLER PIC X VALUE '/'.
007100 05 HD3-FD-YY PIC 9(04).
007200 03 FILLER PIC X(04) VALUE ' AT '.
007300 03 HD3-FILE-TIME.
007400 05 HD3-FT-HH PIC 9(02).
007500 05 FILLER PIC X VALUE ':'.
007600 05 HD3-FT-MM PIC 9(02).
007700 05 FILLER PIC X VALUE ':'.
007800 05 HD3-FT-SS PIC 9(02).
007900 03 FILLER PIC X(39) VALUE SPACES.
008000 03 FILLER PIC X(05) VALUE 'PAGE:'.
008100 03 HD3-PAGE-NBR PIC ZZZ9 VALUE ZEROS.
008200 03 FILLER PIC X(01) VALUE '|'.
008300*
008400 01 HD4.
008500 03 FILLER PIC X(40)
008600 VALUE '*---------------------------------------'.
008700 03 FILLER PIC X(40)
008800 VALUE '---------------------------------------*'.
008900*
009000 01 HD5 PIC X(80) VALUE SPACES.
009100*
009200 01 PAGE-CNT PIC 9(4) VALUE ZEROS.
009300 01 LINE-CNT PIC 9(2) VALUE 99.
009400 01 SEARCH-STATUS PIC X VALUE 'N'.
009500 88 EOF VALUE 'Y'.
009600*
009700 01 PARAMETER.
009800 03 PARM-LENGTH PIC S9(04) COMP-4.
009900 03 FILLER PIC X.
010000 03 PARM-CHARS.
010100 05 PARM-CHAR PIC X OCCURS 1 TO 120 TIMES
010200 DEPENDING ON PARM-LENGTH.
010300 EJECT
010400 PROCEDURE DIVISION.
010500*
010600 GET-PARM-STRING.
010700*
010800 CALL 'DOS_GET_PARMS' USING PARAMETER.
010900*
011000 IF PARM-LENGTH = 0
011100 DISPLAY 'FILE NAME MISSING - JOB TERMINATED'
011200 STOP RUN
011300 END-IF.
011400*
011500 STRING PARM-CHARS DELIMITED BY X'0D'
011600 LOW-VALUE DELIMITED BY SIZE
011700 INTO SEARCH-NAME.
011800*
011900 PERFORM FIND-FIRST.
012000 PERFORM FIND-NEXT UNTIL EOF.
012100 STOP RUN.
012200*
012300 FIND-FIRST SECTION.
012400*
012500 FF-01.
012600*
012700 CALL 'DOS_FIND_FIRST' USING SEARCH-NAME SEARCH-INFO.
012800*
012900 IF RETURN-CODE = 0
013000 MOVE FILE-NAME TO HD2-FILE-NAME INFILE-NAME
013100 EXAMINE HD2-FILE-NAME REPLACING ALL X'00' BY X'20'
013200 MOVE MONTHS TO HD3-FD-MM
013300 MOVE DAYS TO HD3-FD-DD
013400 MOVE YEARS TO HD3-FD-YY
013500 MOVE HOURS TO HD3-FT-HH
013600 MOVE MINUTES TO HD3-FT-MM
013700 MOVE SECONDS TO HD3-FT-SS
013800 PERFORM PROCESS-FILE
013900 ELSE
014000 STOP RUN
014100 END-IF.
014200*
014300 FIND-NEXT SECTION.
014400*
014500 FN-01.
014600*
014700 CALL 'DOS_FIND_NEXT' USING SEARCH-INFO.
014800*
014900 IF RETURN-CODE = 0
015000 MOVE FILE-NAME TO HD2-FILE-NAME INFILE-NAME
015100 EXAMINE HD2-FILE-NAME REPLACING ALL X'00' BY X'20'
015200 MOVE MONTHS TO HD3-FD-MM
015300 MOVE DAYS TO HD3-FD-DD
015400 MOVE YEARS TO HD3-FD-YY
015500 MOVE HOURS TO HD3-FT-HH
015600 MOVE MINUTES TO HD3-FT-MM
015700 MOVE SECONDS TO HD3-FT-SS
015800 PERFORM PROCESS-FILE
015900 ELSE
016000 MOVE 'Y' TO SEARCH-STATUS
016100 END-IF.
016200*
016300 PROCESS-FILE SECTION.
016400*
016500 PF-00.
016600*
016700 OPEN INPUT INFILE.
016800 OPEN OUTPUT OUTFILE.
016900*
017000 PF-10.
017100*
017200 READ INFILE AT END GO TO PF-99.
017300 IF LINE-CNT > 56
017400 PERFORM PF-20.
017500 WRITE OUTFILE-REC FROM INFILE-REC.
017600 ADD 1 TO LINE-CNT.
017700 GO TO PF-10.
017800*
017900 PF-20.
018000*
018100 ADD 1 TO PAGE-CNT.
018200 MOVE PAGE-CNT TO HD3-PAGE-NBR.
018300 IF LINE-CNT = '99'
018400 WRITE OUTFILE-REC FROM HD1
018500 ELSE
018600 WRITE OUTFILE-REC FROM HD1 AFTER ADVANCING PAGE
018700 END-IF.
018800 WRITE OUTFILE-REC FROM HD2.
018900 WRITE OUTFILE-REC FROM HD3.
019000 WRITE OUTFILE-REC FROM HD4.
019100 WRITE OUTFILE-REC FROM HD5.
019200 MOVE 5 TO LINE-CNT.
019300*
019400 PF-99.
019500*
019600 WRITE OUTFILE-REC FROM HD5 BEFORE ADVANCING PAGE.
019700 CLOSE INFILE.
019800 CLOSE OUTFILE.
019900 MOVE 99 TO LINE-CNT.
020000 MOVE 0 TO PAGE-CNT.